package bean;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import DAO.AcessoVascularDAO;
import DAO.AvaliacaoAntropometricaDAO;
import DAO.CidDAO;
import DAO.ConvenioDAO;
import DAO.DiasSessaoDAO;
import DAO.EsquemaDAO;
import DAO.EvolucaoClinicaDAO;
import DAO.ExameDAO;
import DAO.ExameFisicoDAO;
import DAO.HemodialiseDAO;
import DAO.HospitalizacaoDAO;
import DAO.LaboratorioDAO;
import DAO.MensagemDAO;
import DAO.PacienteDAO;
import DAO.StatusMensagemDAO;
import DAO.TipoCapilarDAO;
import DAO.TipoExameDAO;
import DAO.TipoMensagemDAO;
//import DAO.TipoCapilarDAO;
import DAO.UsuarioDAO;
import Model.*;

public class ListasObjetosBean {
	
	private Map<String, Object> listaConvenioSelect;
	private Map<String, Object> listaDiagonosticosSelect;
	private List<SelectItem> listaCidSelect;
	private Map<String, Object> listaPacienteSelect;
	private Map<String, Object> listaUsuarioSelect;
	private Map<String, Object> listaLaboratorioSelect;	
	private Map<String, Object> listaTipoExameSelect;
	private Map<String, Object> listaDiasSessaoSelect;
	private Map<String, Object> listaTipoCapilarSelect;	
	private Map<String, Object> listaTipoMensagemSelect;
	private Map<String, Object> listaStatusMensagem;
		
	
	public Map<String, Object> getListaTipoMensagemSelect() {
		ArrayList<TipoMensagem> arrTipoMensagem = TipoMensagemDAO.GetArrayListTipoMensagem();
		listaTipoMensagemSelect= new LinkedHashMap<String, Object>();	
		
		for(int i = 0 ; i < arrTipoMensagem.size(); i ++)
		{
			listaTipoMensagemSelect.put(arrTipoMensagem.get(i).getTipoMensagem() , arrTipoMensagem.get(i).getIdTipoMensagem());
		}
		
		return listaTipoMensagemSelect;		
	}
	
	public Map<String, Object> getListaStatusMensagemSelect() {
		ArrayList<StatusMensagem> arrStatusMensagem = StatusMensagemDAO.GetArrayListStatusmensagem();
		listaStatusMensagem = new LinkedHashMap<String, Object>();	

		for(int i = 0 ; i < arrStatusMensagem.size(); i ++)
		{
			listaStatusMensagem.put(arrStatusMensagem.get(i).getDescricao() , arrStatusMensagem.get(i).getCd_status());
		}
		
		return listaStatusMensagem;		
		

	}
	
	public Map<String, Object> getListaTipoExameSelect() {
		ArrayList<TipoExame> arrTipoExame = TipoExameDAO.ListaTiposExamesArrayList();
		listaTipoExameSelect = new LinkedHashMap<String, Object>();		
		
		for(int i = 0 ; i < arrTipoExame.size(); i ++)
		{
			listaTipoExameSelect.put(arrTipoExame.get(i).getNomeExame(), arrTipoExame.get(i).getId());
		}
		
		return listaTipoExameSelect;
		
	}

	public List<SelectItem> getListaCidSelect() {
		
		ArrayList<Cid> arrListCid = CidDAO.GetCidArrayList();
		listaCidSelect = new ArrayList<SelectItem>();
		
		for(int i = 0 ; i < arrListCid.size(); i ++)
		{
			String codigo = String.valueOf(arrListCid.get(i).getId());
			SelectItem item = new SelectItem(codigo, arrListCid.get(i).getDescricao());
			listaCidSelect.add(item);
		}
		
		return listaCidSelect;
	}

	public Map<String, Object> getListaLaboratorioSelect() {
		ArrayList<Laboratorio> arrListLaboratorio = LaboratorioDAO.GetCidArrayListLaboratorios();
		listaLaboratorioSelect = new LinkedHashMap<String, Object>();
		
		for(int i = 0; i < arrListLaboratorio.size(); i++)
		{
			listaLaboratorioSelect.put(arrListLaboratorio.get(i).getNomeLaboratorio(), arrListLaboratorio.get(i).getId());
		}
		
		return listaLaboratorioSelect;
	}

	public Map<String, Object> getListaConvenioSelect() {
		ArrayList<Convenio> arrConvenio = ConvenioDAO.GetConvenioArrayList(); 
		listaConvenioSelect  = new LinkedHashMap<String, Object>();	
		for(int i = 0; i< arrConvenio.size(); i++)
		{
			listaConvenioSelect.put(arrConvenio.get(i).getNome_convenio(), String.valueOf(arrConvenio.get(i).getIdConvenio()));
		}		
		return listaConvenioSelect;
	}

	public Map<String, Object> getListaDiagonosticosSelect() {
		return listaDiagonosticosSelect;
	}
	
	
	public Map<String, Object> getListaTipoCapilarSelect() {
		ArrayList<TipoCapilar> arrTipoCapilar =  TipoCapilarDAO.GetArrayListTipoCapilar();		
		listaTipoCapilarSelect = new LinkedHashMap<String, Object>();
		for(int i = 0; i < arrTipoCapilar.size(); i++ )
		{
			listaTipoCapilarSelect.put(arrTipoCapilar.get(i).getNome_tipo() , arrTipoCapilar.get(i).getIdTipoCapilar());
		}	
				
		return listaTipoCapilarSelect;
	}
	
	public Map<String, Object> getListaDiasSessaoSelect() {
		ArrayList<DiasSessao> arrDias =  DiasSessaoDAO.GetDiasSessaoArrayList();		
		listaDiasSessaoSelect = new LinkedHashMap<String, Object>();
		for(int i = 0; i < arrDias.size(); i++ )
		{
			listaDiasSessaoSelect.put(arrDias.get(i).getDescricao(), arrDias.get(i).getIdDiasSessao());
		}
		return listaDiasSessaoSelect;
	}

	public Map<String, Object> getListaPacienteSelect() {
		ArrayList<Paciente> arrPaciente = PacienteDAO.GetArrayListPacientes();
		listaPacienteSelect = new LinkedHashMap<String, Object>();
		for(int i = 0; i < arrPaciente.size(); i++ )
		{
			listaPacienteSelect.put(arrPaciente.get(i).getNome() , arrPaciente.get(i).getIdPaciente());
		}		
		return listaPacienteSelect;
	}
	
	public Map<String, Object> getListaUsuarioSelect() {
		ArrayList<Usuario> arrUsuario = UsuarioDAO.GetUsuarioArrayList();
		listaUsuarioSelect = new LinkedHashMap<String, Object>();
		for(int i = 0; i < arrUsuario.size(); i++ )
		{
			listaUsuarioSelect.put(arrUsuario.get(i).getNome() , arrUsuario.get(i).getIdUsuario());
		}		
		return listaUsuarioSelect;
	}
	
	public ArrayList<Paciente> getListaPacientes() {
		return PacienteDAO.GetArrayListPacientes();
	}

	public ArrayList<Convenio> getListaConvenios() {
		return ConvenioDAO.GetConvenioArrayList();
	}

	public ArrayList<Cid> getListaCid() {
		return CidDAO.GetCidArrayList();
	}
	
	public ArrayList<Laboratorio> getListaLabotorios() throws SQLException {
		return LaboratorioDAO.GetCidArrayListLaboratorios();
	}
	
	public ArrayList<DiasSessao> getListaDiasSessao() {
		return DiasSessaoDAO.GetDiasSessaoArrayList();
	}
	
	public ArrayList<Esquema> getListaEsquemas(){
		return EsquemaDAO.GetArrayListEsquema();
	}

	public ArrayList<ExameFisico> getListaExamesFisicos() {
		return ExameFisicoDAO.GetArrayListExamesFisicos();
	}	

	public ArrayList<Exame> getListaExames() {
		return ExameDAO.GetArrayListExames();
	}	
	
	public ArrayList<TipoCapilar> getListaTipoCapilar(){
		return TipoCapilarDAO.GetArrayListTipoCapilar(); 
	}
	
	public ArrayList<Hemodialise> getListaHemodialise() {
		return HemodialiseDAO.GetArrayListHemodialise();
	}

	public ArrayList<AcessoVascular> getListaAcessoVascular() {
		return AcessoVascularDAO.GetArrayListAcessoVascular();
	}
	
	public ArrayList<AvaliacaoAntropometrica> getListaAvaliacoes() {
		return AvaliacaoAntropometricaDAO.GetArrayListAvaliacaoAntropometricas();
	}
	
	public ArrayList<Usuario> getListaUsuarios() {
		return UsuarioDAO.GetUsuarioArrayList();
	}
	
	public ArrayList<Model.Hospitalizacao> getListaHospitalizacao()
	{
		return HospitalizacaoDAO.GetArrayListHospitalizacao();
	}
	
	public ArrayList<EvolucaoClinica> getListaEvolucoesClinicas()
	{
		return EvolucaoClinicaDAO.GetArrayListEvolucaoClinica();
	}
	
	
}